import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Stroke;
import java.awt.geom.AffineTransform;
import java.awt.geom.Line2D;

public class LigacaoIdentificadorPonto extends Ligacao {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8313620725024635275L;
	private Coordenada coordenada;
	private Iniciador iniciador;
	private Point conetorOrigem;
//	private Point conetorDestino;

	public LigacaoIdentificadorPonto(Identificador identificador,
			Coordenada coordenada) {
		super(identificador, identificador);
		this.coordenada = coordenada;
	}

	public Coordenada getCoordenada() {
		return coordenada;
	}

	public void setCoordenada(Coordenada coordenada) {
		this.coordenada = coordenada;
	}

	@Override
	public void desenhar(Graphics graphics) {
		// TODO Auto-generated method stub
		Graphics2D g2d = (Graphics2D) graphics;
		Stroke anterior = g2d.getStroke();
		g2d.setStroke(new BasicStroke(2));
		if (identificadorDestino == null) {
			g2d.setColor(Color.yellow);
		} else {
			if (identificador.podeAssociar(identificadorDestino)) {
				g2d.setColor(Color.green);
			} else
				g2d.setColor(Color.red);
		}

		Line2D.Double line;
		Polygon arrowHead = new Polygon();
		arrowHead.addPoint(0, 5);
		arrowHead.addPoint(-5, -5);
		arrowHead.addPoint(5, -5);
		
		

		if (identificadorDestino != null) {
			line = new Line2D.Double(conetorOrigem.x,
					conetorOrigem.y, coordenada.getX(), coordenada.getY());
			g2d.draw(line);

		} else {
			line = new Line2D.Double(conetorOrigem.x,
					conetorOrigem.y, coordenada.getX(), coordenada.getY());
			g2d.draw(line);
		}

		AffineTransform tx = new AffineTransform();
		tx.setToIdentity();
		double angle = Math.atan2(line.y2 - line.y1, line.x2 - line.x1);
		tx.translate(line.x2, line.y2);
		tx.rotate((angle - Math.PI / 2d));

		Graphics2D g = (Graphics2D) g2d.create();
		g.setTransform(tx);
		g.fill(arrowHead);
		g.dispose();
	}

	public void setPontoConetorOrigem(Point conetor) {
		// TODO Auto-generated method stub
		System.out.println("ESTOU A DEFENIR O CONETOR DE ORIGEM LIGACAO CONETOR PONTO");
		this.conetorOrigem = conetor;
	}
	
	public Point getPontoConetorOrigem()
	{
		return this.conetorOrigem;
	}
//	public void setPontoConetorDestino(Point conetorDestino2) {
//		// TODO Auto-generated method stub
//		this.conetorDestino = conetorDestino;
//	}

}
